pixelletter 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.1.0
data/lib/pixelletter.rb CHANGED
@@ -5,14 +5,45 @@ require 'restclient_with_cert'
5
5
  require 'yaml'
6
6
 
7
7
  module Pixelletter
8
- if File.exists?(File.join(File.dirname('../'), "CREDENTIALS"))
9
- f = File.join(File.dirname('../'), "CREDENTIALS")
10
- yml = YAML.load(open(f))
11
- ENV['EMAIL'] = yml['email']
12
- ENV['PASSWORD'] = yml['password']
13
- else
14
- ENV['EMAIL'] = nil
15
- ENV['PASSWORD'] = nil
8
+
9
+ ENDPOINT = {
10
+ :production => 'https://www.pixelletter.de/xml/index.php',
11
+ :sandbox => 'http://www.fakeweb.test'
12
+ }
13
+
14
+ def self.endpoint
15
+ if sandbox?
16
+ Pixelletter::ENDPOINT[:sandbox]
17
+ else
18
+ Pixelletter::ENDPOINT[:production]
19
+ end
20
+ end
21
+
22
+ def self.sandbox?
23
+ @@sandbox
24
+ end
25
+
26
+ def self.sandbox!
27
+ self.sandbox = true
28
+ end
29
+
30
+ def self.sandbox=(boolean)
31
+ @@sandbox = boolean
32
+ end
33
+
34
+ self.sandbox = false
35
+
36
+
37
+ def self.load_initial_values
38
+ if File.exists?(File.join(File.dirname('../'), "CREDENTIALS"))
39
+ f = File.join(File.dirname('../'), "CREDENTIALS")
40
+ yml = YAML.load(open(f))
41
+ ENV['EMAIL'] = yml['email']
42
+ ENV['PASSWORD'] = yml['password']
43
+ else
44
+ ENV['EMAIL'] = nil
45
+ ENV['PASSWORD'] = nil
46
+ end
16
47
  end
17
48
  end
18
49
 
@@ -2,20 +2,24 @@ module Pixelletter
2
2
  class Request < Base
3
3
  attr_required :email, :password, :agb, :widerrufsverzicht, :testmodus
4
4
 
5
- ENDPOINT = 'https://www.pixelletter.de/xml/index.php'
6
-
7
5
  def initialize(attributes = {})
8
6
  super
9
7
  end
10
8
 
11
- def request(order)
9
+ def request(order, file=nil)
12
10
  xml = build_xml(order)
13
11
  xml_file = File.join(File.dirname('../'), "pixml.xml")
14
12
  File.open(xml_file, 'w') { |file| file.write(xml) }
15
13
  upload = File.new(File.join(File.dirname('../'), "pixml.xml"), 'rb')
16
14
 
17
- response = handle_response do
18
- RestClient.post('https://www.pixelletter.de/xml/index.php', xml: upload)
15
+ if file
16
+ response = handle_response do
17
+ RestClient.post(endpoint, xml: upload, "uploadfile0" => file)
18
+ end
19
+ else
20
+ response = handle_response do
21
+ RestClient.post(endpoint, xml: upload)
22
+ end
19
23
  end
20
24
 
21
25
  File.delete(File.join(File.dirname('../'), "pixml.xml"))
@@ -53,5 +57,8 @@ module Pixelletter
53
57
  }
54
58
  end
55
59
 
60
+ def endpoint
61
+ Pixelletter.endpoint
62
+ end
56
63
  end
57
64
  end
@@ -22,10 +22,50 @@ describe Pixelletter do
22
22
  after do
23
23
  if File.exists?(File.join(File.dirname('../'), "CREDENTIALS.bak"))
24
24
  system("mv #{File.join(File.dirname('../'), "CREDENTIALS.bak")} #{File.join(File.dirname('../'), "CREDENTIALS")}")
25
- f = File.join(File.dirname('../'), "CREDENTIALS")
26
- yml = YAML.load(open(f))
27
- ENV['EMAIL'] = yml['email']
28
- ENV['PASSWORD'] = yml['password']
25
+ Pixelletter.load_initial_values
26
+ end
27
+ end
28
+ end
29
+
30
+ context 'without CREDENTIALS file' do
31
+ before do
32
+ if File.exists?(File.join(File.dirname('../'), "CREDENTIALS"))
33
+ system("mv #{File.join(File.dirname('../'), "CREDENTIALS")} #{File.join(File.dirname('../'), "CREDENTIALS.bak")}")
34
+ end
35
+ Pixelletter.load_initial_values
36
+ end
37
+
38
+ it "should set the correct ENV variables" do
39
+ ENV['EMAIL'].should eq(nil)
40
+ ENV['PASSWORD'].should eq(nil)
41
+ end
42
+
43
+ after do
44
+ if File.exists?(File.join(File.dirname('../'), "CREDENTIALS.bak"))
45
+ system("mv #{File.join(File.dirname('../'), "CREDENTIALS.bak")} #{File.join(File.dirname('../'), "CREDENTIALS")}")
46
+ Pixelletter.load_initial_values
47
+ end
48
+ end
49
+ end
50
+
51
+ describe 'ENDPOINT' do
52
+ it "should have a production value" do
53
+ Pixelletter.endpoint.should eq('https://www.pixelletter.de/xml/index.php')
54
+ end
55
+
56
+ it "should be possible to activate the sandbox" do
57
+ Pixelletter.sandbox?.should eq(false)
58
+ Pixelletter.sandbox!
59
+ Pixelletter.sandbox?.should eq(true)
60
+ end
61
+
62
+ context 'while sandboxing' do
63
+ before do
64
+ Pixelletter.sandbox = true
65
+ end
66
+
67
+ it "should give an empty value" do
68
+ Pixelletter.endpoint.should eq('http://www.fakeweb.test')
29
69
  end
30
70
  end
31
71
  end
@@ -2,6 +2,23 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe Pixelletter::Request do
5
+ before do
6
+ Pixelletter.load_initial_values
7
+ Pixelletter.sandbox!
8
+ xml = <<-XML
9
+ <?xml version="1.0" encoding="UTF-8"?>
10
+ <pixelletter version="1.1">
11
+ <response>
12
+ <result code="100">
13
+ <msg>Auftrag erfolgreich übermittelt.</msg>
14
+ <id>11954460</id>
15
+ </result>
16
+ </response>
17
+ </pixelletter>
18
+ XML
19
+
20
+ FakeWeb.register_uri(:post, "http://www.fakeweb.test", :body => xml)
21
+ end
5
22
 
6
23
  let :attributes do
7
24
  {
@@ -55,21 +72,11 @@ describe Pixelletter::Request do
55
72
  }
56
73
  end
57
74
 
58
- # <?xml version="1.0" encoding="UTF-8"?>
59
- # <pixelletter version="1.1">
60
- # <response>
61
- # <result code="100">
62
- # <msg>Auftrag erfolgreich übermittelt.</msg>
63
- # <id>11954460</id>
64
- # </result>
65
- # </response>
66
- # </pixelletter>
67
-
68
75
  it "should send a successful request" do
69
- # order = Pixelletter::TextOrder.new()
70
- pr = mock(Pixelletter::Request.new(attributes))
71
- pr.stub(:request).with(order).and_return({:value=>"100", :msg=>"Auftrag erfolgreich übermittelt.", :id=>"11954536"})
76
+ pr = Pixelletter::Request.new(attributes)
77
+
72
78
  response = pr.request(order)
79
+
73
80
  response[:value].should == '100'
74
81
  end
75
82
  end
@@ -89,10 +96,15 @@ describe Pixelletter::Request do
89
96
 
90
97
  it "should send a successful request" do
91
98
  pr = Pixelletter::Request.new(attributes)
92
- # pr.stub(:request).with(order).and_return({:value=>"100", :msg=>"Auftrag erfolgreich übermittelt.", :id=>"11954536"})
93
- response = pr.request(order)
94
- puts response.inspect
95
- # response[:value].should == '100'
99
+ if File.exists?(File.join('spec', 'files', 'test.pdf'))
100
+ pdf_file = File.new(File.join('spec', 'files', 'test.pdf'))
101
+ else
102
+ pdf_file = nil
103
+ end
104
+
105
+ response = pr.request(order, pdf_file)
106
+
107
+ response[:value].should == '100'
96
108
  end
97
109
  end
98
110
  end
@@ -24,6 +24,30 @@ describe Pixelletter::XMLBuilder do
24
24
  XML
25
25
  end
26
26
 
27
+ context 'with false as value' do
28
+ let :auth do
29
+ { auth: { email: 'email@email.de', password: 'password', agb: false, widerrufsverzicht: false, testmodus: true } }
30
+ end
31
+
32
+ it 'should create a valid xml with an <auth> block' do
33
+ b = Pixelletter::XMLBuilder.new
34
+ xml = b.create_xml(auth)
35
+
36
+ xml.should equal_xml(<<-XML)
37
+ <?xml version="1.0" encoding="UTF-8"?>
38
+ <pixelletter version="1.0">
39
+ <auth>
40
+ <email>email@email.de</email>
41
+ <password>password</password>
42
+ <agb>nein</agb>
43
+ <widerrufsverzicht>nein</widerrufsverzicht>
44
+ <testmodus>true</testmodus>
45
+ </auth>
46
+ </pixelletter>
47
+ XML
48
+ end
49
+ end
50
+
27
51
  let :order do
28
52
  { order:
29
53
  {
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,12 @@
1
1
  require 'simplecov'
2
- SimpleCov.start
2
+ SimpleCov.start do
3
+ add_filter ".bundle"
4
+ end
3
5
  require 'rspec'
4
6
  require 'rspec/autorun'
5
7
  require 'test_xml/spec'
6
8
  require 'pixelletter'
9
+ require 'fakeweb'
7
10
 
8
11
  RSpec.configure do |c|
9
12
  c.mock_with :rspec
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixelletter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -82,7 +82,7 @@ dependencies:
82
82
  requirements:
83
83
  - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: 3.1.4
85
+ version: 3.0.4
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: 3.1.4
93
+ version: 3.0.4
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: rspec
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -203,6 +203,22 @@ dependencies:
203
203
  - - ~>
204
204
  - !ruby/object:Gem::Version
205
205
  version: 0.9.1
206
+ - !ruby/object:Gem::Dependency
207
+ name: fakeweb
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
206
222
  description: A simple gem to use the pixelletter.de API as there exists only an aweful
207
223
  PHP class yet.
208
224
  email: holger@5minutenpause.com